home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Surfer: Getting Started
/
Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin
/
pc
/
mac
/
bonus
/
peter_le
/
finger-1
/
my_units
/
myteprin.uni
< prev
next >
Wrap
Text File
|
1992-02-24
|
2KB
|
82 lines
unit MyTEPrinting;
{ This code is part of the Finger/Fingerd source code, written in THINK Pascal 4 }
{ Copyright 1991-1992 Peter N Lewis }
{ If you use this code, you must give me credit in your about box and documentation }
{ This is part of my generic library of routines }
interface
uses
MyPrinting;
type
TEPObject = object(PObject)
te: TEHandle;
function CountPages (r: rect): integer;
override;
procedure DrawPage (r: rect; gp: GrafPtr; pg: integer; first, last: boolean);
override;
end;
implementation
{$S Printing}
function GetNextStart (r: rect; startline: integer; te: TEHandle): integer;
var
hite, endline: integer;
begin
with r do
hite := bottom - top;
endline := startline;
while (endline <= te^^.nLines) & (TEGetHeight(endline, startline, te) < hite) do
endline := endline + 1;
GetNextStart := endline;
end;
{$S Printing}
function TEPObject.CountPages (r: rect): integer;
var
count, startline: integer;
begin
count := 0;
startline := 1;
while startline <= te^^.nLines do begin
startline := GetnextStart(r, startline, te);
count := count + 1;
end;
CountPages := count;
end;
{$S Printing}
procedure TEPObject.DrawPage (r: rect; gp: GrafPtr; pg: integer; first, last: boolean);
var
startline, endline, i, offset: integer;
oldport, oldinport: GrafPtr;
vr, dr: rect;
begin
Getport(oldport);
SetPort(gp);
oldinport := te^^.inPort;
te^^.inPort := gp;
vr := te^^.viewRect;
dr := te^^.destRect;
startline := 1;
for i := 1 to pg - 1 do
startline := GetNextStart(r, startline, te);
endline := GetNextStart(r, startline, te) - 1;
r.bottom := r.top + TEGetHeight(endline, startline, te);
if startline = 1 then
offset := 0
else
offset := TEGetHeight(startline - 1, 1, te);
te^^.viewRect := r;
te^^.destRect.top := te^^.viewRect.top - offset;
TEUpdate(r, te);
te^^.viewRect := vr;
te^^.destRect := dr;
te^^.inPort := oldinport;
Setport(oldport);
end;
end.